1. The Field of the Invention
The present invention relates to network communication technology, and more specifically, to reliable delivery of multi-cast conferencing data.
2. Background and Relevant Art
Computer networks have enhanced our ability to communicate and access information by allowing one computer or device (hereinafter both referred to as a “computing system”) to communicate over a network with another computing system using electronic messages. When transferring an electronic message between computing systems, the electronic message will often pass through a protocol stack that performs operations on the data within the electronic message (e.g., packetizing, routing, flow control). The Open System Interconnect (“OSI”) model is an example of a networking framework for implementing a protocol stack.
The OSI model breaks down the operations for transferring an electronic message into seven distinct “layers,” each designated to perform certain operations in the data transfer process. While protocol stacks can potentially implement each of the layers, many protocol stacks implement only selective layers for use in transferring data across a network. When data is transmitted from a computing system, it originates at the application layer and is passed down to intermediate lower layers and then onto a network. When data is received from a network it enters the physical layer and is passed up to higher intermediate layers and then eventually received at the application layer. The application layer, the upper most layer, is responsible for supporting applications and end-user processes, such as, for example, electronic conferencing software.
Often, when two computing systems are to communicate with each other, the two computing systems will first establish a connection (e.g., a Transmission Control Protocol (“TCP”) connection). Thus, when a number of different computing systems are to participate in an electronic conference, the different computing systems may establish connections among one another. Accordingly, each computing system participating in the electronic conference is then able to share conference data with every other computing system participating in the electronic conference. The established connections can result in the computing systems being configured in a logical hierarchy, such as, for example, that of a T.120 conferencing session. A logical hierarchy can include a root computing system having connections to one or more intermediate computing systems, that are in turn eventually connected to one or more leaf computing systems (potentially through connections to one or more other intermediate computing systems). Accordingly, a logically hierarchy can include a significant number of established connections.
During an electronic conference, conferencing data typically originates at an intermediate or leaf computing system in one branch of the logical hierarchy. The intermediate or leaf computing system transfers the conferencing data up the logical hierarchy (e.g., by utilizing established TCP connections) to the root computing system. The root computing system then transfers the conferencing data down the logical hierarchy (e.g., by utilizing established TCP connections) to all the intermediate and leaf computing systems in the logical hierarchy. Accordingly, for conferencing data to reach an intermediate or leaf computing system the conferencing data may travel over a number of established connections. For example to deliver conferencing data to a leaf computing system, the conferencing data may travel over first connection between a root computing system and a first intermediate computing system, over second connection between the first intermediate computing system and a second intermediate computing system, and over a third connection between the second intermediate computing system and the leaf computing system.
Many connection-oriented protocols, such as TCP, provide the features of end-to-end error recovery, resequencing, and flow control. Accordingly, utilizing a connection-oriented protocol to transfer conferencing data increases reliability. However, to realize the features of connection-oriented protocols, state information, such as, for example, send and receive buffers, congestion control parameters, and sequence and acknowledgment number parameters must be maintained for each TCP connection. Further, some state information must be transferred along with conferencing data when conferencing data is transferred between computing systems. Maintenance and transfer of state information consumes computing system resources (e.g., system memory), consumes network bandwidth, and potentially increases network latency. In an electronic conference with a number of intermediate and leaf computing systems the bandwidth consumed by transferred state information can be relatively large.
As a result, some electronic conferencing applications have utilized multi-cast protocols (e.g., multi-cast Internet Protocol (“IP”)) to transfer conferencing data from a root computing system down to other computing systems in a logically hierarchy. In electronic conferences utilizing multi-cast protocols, each intermediate and leaf computing system listens on the same designated multi-cast address for conferencing data. Accordingly, a root computing system need only transmit conferencing data to the designated multi-cast address to deliver the conferencing data to all the other computing systems. During normal operation, each computing system listening on the designated multi-cast address will then receive the conferencing data.
However, since multi-cast protocols are typically not connection-oriented, multi-cast protocols do not provide any reliable messaging features (e.g., end-to-end error recovery, resequencing, flow control, etc). Thus, when multi-cast data is lost or damaged there is little, if anything, that can be done to recover the lost or damaged data. This is unfortunate, since lost or damaged conferencing data can significantly reduce the usefulness of an electronic conference. Further, since multi-cast conferencing data is transmitted to every computer system, lost or damaged multi-cast conferencing data can potentially affect every intermediate and leaf computing system participating in the electronic conference. Therefore systems, methods, computer program products, and data structures for reliably delivering multi-cast conferencing data would be advantageous.